/**
 * @addtogroup brd_debugger
 * brd_debugger
 * @{
 */
/**
 * @file brd_debugger.h
 * @brief 调试器板级层
 * @note 
 * @par 修改日志
 * <table>
 * <tr><th>Date       <th>Version   <th>Author      <th>Description 
 * <tr><td>2024-03-22 <td>1.0       <td>软件工程院  <td>创建初始版本
 * @par 示例
 * @code
 *  
    Brd_THandle handle = Brd_DebuggerCreate(0);
    ...
    /// 调试器功能关闭
    Brd_DebuggerSetFunc(handle, False);
    Brd_DebuggerOpen(handle);
    ...
    Brd_DebuggerClose(handle);
    ...
    Brd_DebuggerDestroy(handle);
 * @endcode 
 * @copyright 杭州鸿泉物联网技术股份有限公司
 */

#ifndef _BRD_DEBUGGER_H_
#define _BRD_DEBUGGER_H_

#include <ofc_types.h>
#include "brd_common.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 根据标识创建句柄
 * @param id: 标识, 参见[brd_debugger_def.h](@ref Brd_TDebuggerIdTag)
 * @return 当返回值为非 NULL 时, 表示创建成功, \n
 *         当返回值为 NULL 时, 表示创建失败, 原因为类型不支持
 */
Brd_THandle Brd_DebuggerCreate(Int32 id);

/**
 * 释放句柄
 * @param handle: 句柄
 * @return 当返回值 >= 0 时, 表示成功 \n
 *         当返回值 < 0 时, 表示失败, 参见[brd_def](@ref Brd_TErrorCodeTag)
 */
Int32 Brd_DebuggerDestroy(Brd_THandle handle);

/**
 * 获取标识
 * @param handle: 句柄
 * @return 返回用于创建句柄的标识
 */
Int32 Brd_DebuggerId(Brd_THandle handle);

/**
 * 设置调试器是否使能
 * @note 只有在open之前调用才有效, 默认使能
 * @param handle: 句柄
 * @param enable: 使能调试器功能, True: 使能, False: 失能
 * @return 当返回值 >= 0 时, 表示设置成功 \n
 *         当返回值 < 0 时, 表示设置失败, 参见[brd_def](@ref Brd_TErrorCodeTag)
 */
Int32 Brd_DebuggerSetFunc(Brd_THandle handle, Bool enable);

/**
 * 打开板级层调试器控制对象
 * @param handle: 句柄
 * @return 当返回值 >= 0 时, 表示打开成功 \n
 *         当返回值 < 0 时, 表示打开失败, 参见[brd_def](@ref Brd_TErrorCodeTag)
 */
Int32 Brd_DebuggerOpen(Brd_THandle handle);

/**
 * 关闭板级层调试器控制对象
 * @param handle: 句柄
 * @return 当返回值 >= 0 时, 表示关闭成功 \n
 *         当返回值 < 0 时, 表示关闭失败, 参见[brd_def](@ref Brd_TErrorCodeTag)
 */
Int32 Brd_DebuggerClose(Brd_THandle handle);

#ifdef __cplusplus
}  ///< extern "C"
#endif

#endif // _BRD_DEBUGGER_H_
/**
 * @} 
 */
